D7 a INADDR_ANY
Otázka od: Dalibor Toman
21. 9. 2002 19:31
DD,
pouzivam D5 a narazil jsem pri testovani D7 na tento problem:
kod:
--
VAR
IP : DWORD;
begin
if IP = INADDR_NONE then
--
v D7 kompilator tvrdi, ze podminka je vzdycky neplatna. Pri pohledu do ASM
je jasne, ze se provede konverze IP na 64 bitu a pak se vysledek porovnava
s -1 coz je samozrejme vzdy false.
D5 zadnou konverzi neprovadi a podminka chodi jak ma.
D7 (mozna uz D6) zmenilo definici INADDR_ANY (hint nabizi typ : -128..127 -
zdrojaky winsock.pas v Trial verzi nejsou ) nebo se zmenilo prirazeni
defaultnich typu ciselnym netypovym konstantam podle hodnoty konstanty ??
Podle napovedy (nejsem si jist, zda se mi v D7 nezobrazuje helpfile z D5) by
CONST INADDR_ANY = $FFFFFFFF mel mit za vysledek typ Cardinal (cili DWORD).
Cili asi Winsock.pas z D7 definuje const INADDR_ANY=-1; (coz by melo
padnout na ten shortint) ?
po zmene INVALID_HANDLE_VALUE (aby se to nepletlo tak z -1 na DWORD(-1)) je
to dalsi podobny kotrmelec mezi verzemi Delphi.
D. Toman
Odpovedá: Petr Vones
23. 9. 2002 16:06
From: "Dalibor Toman" <dtoman@fortech.cz>
> D7 (mozna uz D6) zmenilo definici INADDR_ANY (hint nabizi typ : -128..127 -
> zdrojaky winsock.pas v Trial verzi nejsou ) nebo se zmenilo prirazeni
D6 a D7: INADDR_NONE = -1;
Petr Vones